package com.gao.stream;

import java.util.*;
import java.util.function.Consumer;
import java.util.stream.IntStream;

/**
 * @Author: ShanYuqing
 * @Version: v1.0
 */
public class StreamDemoo {
    /*
            获取Stream流对象

            将数据放在流水线的传送带上

            1.集合获取Stream 流对象(使用Collection接口中的默认方法)

            default Stream<E> stream()

            ★Map集合获取Stream流对象， 需要间接获取

            一map.entrySet(). stream()

            2. 数组获取Stream 流对象(使用Arrays数组工具类中的静态方法)

            static <T> Stream<T> stream (T[] array)

            3.零散的数据获取Stream流对象(使用 Stream类中的静态方法)

            static <T> Stream<T> of(T... values)

            Stream流的中间操作方法

            操作后返回Stream对象，可以继续操作

            Stream<T> filter(Predicate<? super T> predicate)用于对流中的数据进行过滤

            Stream<T> Limit(long maxSize)获取前几个元素

            Stream<T> skip(Long n)跳过前几个元素

            Stream<T> distinct() 去除流中重复的元素依赖(hashCode 和equals方法)

            static <T> Stream<T> concat(Stream a, Stream b)合并a和b两个流为一个流


     */
    public static void main(String[] args) {
method();


    }

    private static void method2() {
        int [] aa = {11,22,33};
        double[] bb = {1.5,2.0};
        Arrays.stream(aa).forEach(s-> System.out.println(s));
    }

    private static void method() {
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        list.stream().forEach(s -> System.out.println(s));

        Set<String> set = new HashSet<>();
        set.add("张三");
        set.add("李四");
        set.add("王五");
        set.add("张三");
        set.stream().forEach(s-> System.out.println(s));

        Map<String,String> map = new HashMap<>();
        map.put("张三","天津");
        map.put("lis","北京");
        map.put("王五","上海");
        map.entrySet().forEach(System.out::println);
    }
}
